Hello, world!
昔からプログラミングの第一歩は画面に「Hello, world!」と出力することである。
コード(プログラム)
code:hello.c
int main(void)
{
printf("Hello, world!\n");
return 0;
}
解説
#include <stdio.h> (インクルード・スタンダードアイオーどっとエイチ):標準入出力(standard input/output,standard I/O)関係のヘッダ(header)をインクルード(include)する。printf() を使うために必要。このようなインクルードは,不要な場合でも書いておいて問題はないので,いつでも書いておくのが無難。
int main(void) (イント・メイン・ヴォイド)は,プログラムを実行するとまず呼び出される main という関数の定義の始まり部分。ヴォイドつまり何も与えずに呼び出し,イント(インテジャー,integer,整数)を返す。
printf("Hello, world!\n") (プリントエフ・ハローワールド!・バックスラッシュ(または円印)エヌ):Hello, world! と出力し,改行(\n,newline)する。
return 0(リターン・ゼロ):ゼロを返す(プログラムが正常終了したことをOSに知らせるため,最後に 0 を返すのが習慣である)。
見やすいように,中括弧の中は,字下げ(インデント,indent)する。半角空白4文字分くらいの字下げが一般的。全角空白で字下げするとエラーになるので注意。
\ はバックスラッシュ(backslash)と呼ばれる文字。\n で改行(newline)を表す。\ はWindows環境でときどき文字化けして ¥ のように表示されることがあるが,気にしない。
printf などの関数の定義を知りたければ,ターミナルに man 3 printf などと打ち込めばよい。システムのマニュアルの第3章(C言語から呼び出せる関数)の printf の説明が読める。man コマンドそのもののマニュアルを読みたければ man man と打ち込めばよい。
コンパイルと実行
この6行をメモ帳(あるいは好きなテキストエディタ)に書き込み,hello.c というファイル名で保存して,ターミナルに次のように打ち込む:
gcc hello.c
実行は,UNIX環境(Mac,Linuxなど)なら
./a.out
Windows環境(Cygwinなど)なら
a.exe または単に a
と打ち込んでも実行できるはず。
コンパイル・コンパイラ
hello.c という「ソースコード」(source code)を gcc という「コンパイラ」(compiler)で「コンパイル」(compile)すると,MacやLinuxでは a.out(Windowsでは a.exe)という実行プログラム(実行ファイル,executable)ができる。
実行ファイル名を指定するには -o オプションを使う:
gcc hello.c -o hello
または
gcc -o hello hello.c
これで hello(Windowsでは hello.exe)という実行ファイルができる。その実行は
./hello
である(Windowsでは単に hello と打てばよい)。
ソースコードをオープンにする(公開する)のがオープンソースソフト(open source software)である。WordやExcelなどの商品ソフト(proprietary software)は,実行ファイルだけを販売し,ソースコードは企業秘密として秘匿されている。ソースコードをオープンにすることによって,中身(動作原理)がわかり,容易に改良することができる。
日本語出力
code:hello2.c
int main(void)
{
printf("こんにちはこんにちは!\n"); /* UTF-8で保存 */
return 0;
}
一般に,日本語を含む場合は,文字コードをUTF-8(UTF-8N)にする必要がある。Windowsのコマンドプロンプトの場合は文字コードをシフトJISにする。なお,/* ... */ の部分はコメント(注釈)つまりメモ書きであり,コンパイルの対象ではない。